/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package transport;

/**
 *
 * @author Miguel
 */
public class Chariot {
    private Station s;
    private Central c;
    private enum Action{demarre, charge, goToCentral, goToStation, decharge}
    private Action fait;
    private int temps;
    private String titre;
    private int attentPourCharger;
    private int attentPourDecharger;
    private int nbDechargement;
    
    public Chariot(String nom, Station stat, Central statCentral){
        s = stat;
        c = statCentral;
        fait = Action.demarre;
        temps = 0;
        titre = nom;
        attentPourCharger = 0;
        attentPourDecharger = 0;
        nbDechargement = 0;
    }
    
    public void dos(){
        if(fait == Action.demarre){
            fait = Action.goToStation;
            temps = s.dureeTrajet();
        }
        else if(temps > 0){temps--;}
        else{
            if(fait == Action.charge){//fini de charger
                fait = Action.goToCentral;
                temps = s.dureeTrajet();
                s.liberPlace();
            }
            else if(fait == Action.decharge){//fini de décharger
                fait = Action.goToStation;
                temps = s.dureeTrajet();
                nbDechargement++;
                c.liberPlace();
            }
            else if(fait == Action.goToStation){//attent à la station
                if(!s.isOccuper() && s.isFirstAttent(titre)){
                    fait = Action.charge;
                    attentPourCharger += temps * -1;
                    temps = s.charge();
                }
                else{
                    if(temps == 0){s.addAttent(titre); temps--;}
                    else{temps--;}
                }
            }
            else if(fait == Action.goToCentral){//attent au central
                if(!c.isOccuper() && c.isFirstAttent(titre)){
                    fait = Action.decharge;
                    attentPourDecharger += temps * -1;
                    temps = c.decharge();
                }
                else{
                    if(temps == 0){c.addAttent(titre); temps--;}
                    else{temps--;}
                }
            }
        }
    }
    
    public int getAttentPourDecharger(){return attentPourDecharger;}
    public int getAttentPourCharger(){return attentPourCharger;}
    public int getNbDechargement(){return nbDechargement;}
    public String getNom(){return titre;}
}
